home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / asm / signal.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  6KB  |  237 lines

  1. #ifndef _ASMi386_SIGNAL_H
  2. #define _ASMi386_SIGNAL_H
  3.  
  4. #include <linux/types.h>
  5. #include <linux/linkage.h>
  6. #include <linux/time.h>
  7. #include <linux/compiler.h>
  8.  
  9. /* Avoid too many header ordering problems.  */
  10. struct siginfo;
  11.  
  12. #ifdef __KERNEL__
  13. /* Most things should be clean enough to redefine this at will, if care
  14.    is taken to make libc match.  */
  15.  
  16. #define _NSIG        64
  17. #define _NSIG_BPW    32
  18. #define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
  19.  
  20. typedef unsigned long old_sigset_t;        /* at least 32 bits */
  21.  
  22. typedef struct {
  23.     unsigned long sig[_NSIG_WORDS];
  24. } sigset_t;
  25.  
  26. #else
  27. /* Here we must cater to libcs that poke about in kernel headers.  */
  28.  
  29. #define NSIG        32
  30. #ifndef __sigset_t_defined
  31. typedef unsigned long sigset_t;
  32. #endif
  33.  
  34. #endif /* __KERNEL__ */
  35.  
  36. #define SIGHUP         1
  37. #define SIGINT         2
  38. #define SIGQUIT         3
  39. #define SIGILL         4
  40. #define SIGTRAP         5
  41. #define SIGABRT         6
  42. #define SIGIOT         6
  43. #define SIGBUS         7
  44. #define SIGFPE         8
  45. #define SIGKILL         9
  46. #define SIGUSR1        10
  47. #define SIGSEGV        11
  48. #define SIGUSR2        12
  49. #define SIGPIPE        13
  50. #define SIGALRM        14
  51. #define SIGTERM        15
  52. #define SIGSTKFLT    16
  53. #define SIGCHLD        17
  54. #define SIGCONT        18
  55. #define SIGSTOP        19
  56. #define SIGTSTP        20
  57. #define SIGTTIN        21
  58. #define SIGTTOU        22
  59. #define SIGURG        23
  60. #define SIGXCPU        24
  61. #define SIGXFSZ        25
  62. #define SIGVTALRM    26
  63. #define SIGPROF        27
  64. #define SIGWINCH    28
  65. #define SIGIO        29
  66. #define SIGPOLL        SIGIO
  67. /*
  68. #define SIGLOST        29
  69. */
  70. #define SIGPWR        30
  71. #define SIGSYS        31
  72. #define    SIGUNUSED    31
  73.  
  74. /* These should not be considered constants from userland.  */
  75. #define SIGRTMIN    32
  76. #define SIGRTMAX    _NSIG
  77.  
  78. /*
  79.  * SA_FLAGS values:
  80.  *
  81.  * SA_ONSTACK indicates that a registered stack_t will be used.
  82.  * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
  83.  * SA_RESTART flag to get restarting signals (which were the default long ago)
  84.  * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
  85.  * SA_RESETHAND clears the handler when the signal is delivered.
  86.  * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
  87.  * SA_NODEFER prevents the current signal from being masked in the handler.
  88.  *
  89.  * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
  90.  * Unix names RESETHAND and NODEFER respectively.
  91.  */
  92. #define SA_NOCLDSTOP    0x00000001u
  93. #define SA_NOCLDWAIT    0x00000002u
  94. #define SA_SIGINFO    0x00000004u
  95. #define SA_ONSTACK    0x08000000u
  96. #define SA_RESTART    0x10000000u
  97. #define SA_NODEFER    0x40000000u
  98. #define SA_RESETHAND    0x80000000u
  99.  
  100. #define SA_NOMASK    SA_NODEFER
  101. #define SA_ONESHOT    SA_RESETHAND
  102. #define SA_INTERRUPT    0x20000000 /* dummy -- ignored */
  103.  
  104. #define SA_RESTORER    0x04000000
  105.  
  106. /* 
  107.  * sigaltstack controls
  108.  */
  109. #define SS_ONSTACK    1
  110. #define SS_DISABLE    2
  111.  
  112. #define MINSIGSTKSZ    2048
  113. #define SIGSTKSZ    8192
  114.  
  115. #ifdef __KERNEL__
  116.  
  117. /*
  118.  * These values of sa_flags are used only by the kernel as part of the
  119.  * irq handling routines.
  120.  *
  121.  * SA_INTERRUPT is also used by the irq handling routines.
  122.  * SA_SHIRQ is for shared interrupt support on PCI and EISA.
  123.  */
  124. #define SA_PROBE        SA_ONESHOT
  125. #define SA_SAMPLE_RANDOM    SA_RESTART
  126. #define SA_SHIRQ        0x04000000
  127. #endif
  128.  
  129. #define SIG_BLOCK          0    /* for blocking signals */
  130. #define SIG_UNBLOCK        1    /* for unblocking signals */
  131. #define SIG_SETMASK        2    /* for setting the signal mask */
  132.  
  133. /* Type of a signal handler.  */
  134. typedef void __signalfn_t(int);
  135. typedef __signalfn_t __user *__sighandler_t;
  136.  
  137. typedef void __restorefn_t(void);
  138. typedef __restorefn_t __user *__sigrestore_t;
  139.  
  140. #define SIG_DFL    ((__sighandler_t)0)    /* default signal handling */
  141. #define SIG_IGN    ((__sighandler_t)1)    /* ignore signal */
  142. #define SIG_ERR    ((__sighandler_t)-1)    /* error return from signal */
  143.  
  144. #ifdef __KERNEL__
  145. struct old_sigaction {
  146.     __sighandler_t sa_handler;
  147.     old_sigset_t sa_mask;
  148.     unsigned long sa_flags;
  149.     __sigrestore_t sa_restorer;
  150. };
  151.  
  152. struct sigaction {
  153.     __sighandler_t sa_handler;
  154.     unsigned long sa_flags;
  155.     __sigrestore_t sa_restorer;
  156.     sigset_t sa_mask;        /* mask last for extensibility */
  157. };
  158.  
  159. struct k_sigaction {
  160.     struct sigaction sa;
  161. };
  162. #else
  163. /* Here we must cater to libcs that poke about in kernel headers.  */
  164.  
  165. #ifndef _SIGNAL_H
  166. struct sigaction {
  167.     union {
  168.       __sighandler_t _sa_handler;
  169.       void (*_sa_sigaction)(int, struct siginfo *, void *);
  170.     } _u;
  171.     sigset_t sa_mask;
  172.     unsigned long sa_flags;
  173.     void (*sa_restorer)(void);
  174. };
  175. #endif
  176.  
  177. #define sa_handler    _u._sa_handler
  178. #define sa_sigaction    _u._sa_sigaction
  179.  
  180. #endif /* __KERNEL__ */
  181.  
  182. #ifndef _SIGNAL_H
  183. typedef struct sigaltstack {
  184.     void __user *ss_sp;
  185.     int ss_flags;
  186.     size_t ss_size;
  187. } stack_t;
  188. #endif
  189.  
  190. #ifdef __KERNEL__
  191. #include <asm/sigcontext.h>
  192.  
  193. #define __HAVE_ARCH_SIG_BITOPS
  194.  
  195. static __inline__ void sigaddset(sigset_t *set, int _sig)
  196. {
  197.     __asm__("btsl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
  198. }
  199.  
  200. static __inline__ void sigdelset(sigset_t *set, int _sig)
  201. {
  202.     __asm__("btrl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
  203. }
  204.  
  205. static __inline__ int __const_sigismember(sigset_t *set, int _sig)
  206. {
  207.     unsigned long sig = _sig - 1;
  208.     return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
  209. }
  210.  
  211. static __inline__ int __gen_sigismember(sigset_t *set, int _sig)
  212. {
  213.     int ret;
  214.     __asm__("btl %2,%1\n\tsbbl %0,%0"
  215.         : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
  216.     return ret;
  217. }
  218.  
  219. #define sigismember(set,sig)            \
  220.     (__builtin_constant_p(sig) ?        \
  221.      __const_sigismember((set),(sig)) :    \
  222.      __gen_sigismember((set),(sig)))
  223.  
  224. static __inline__ int sigfindinword(unsigned long word)
  225. {
  226.     __asm__("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");
  227.     return word;
  228. }
  229.  
  230. struct pt_regs;
  231. extern int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset));
  232. #define ptrace_signal_deliver(regs, cookie) do { } while (0)
  233.  
  234. #endif /* __KERNEL__ */
  235.  
  236. #endif
  237.